In a networked setting, components, such as devices, services and/or applications, may need to exchange data. A few of these components may be able to essentially accept and provide arbitrary types of data without restriction. For example, a file server might accept data in any format for storage in a file, since it does need to understand/parse/use the actual contents to store them.
However, many components must be able to understand the data types they receive in order to function properly. For example, a printer may only understand a Postscript data type format, or a projector may only understand GIF data type formats. But, if the printer does not receive data in a Postscript format, or the projector does not receive data in a GIF format, then the printer can not print and the projector can not display the received data.
As a result, compatibility is limited to a set of fixed data types that a particular sender can provide and a particular receiver can understand and use. Typically, changing this fixed set of data types for the senders and receivers of data requires rewriting the components to be able to process the new data types. For example, the printer would need to be reprogrammed to handle a new type of data, such as PDF, or the data sender would need a filter or translation mechanism installed ahead of time that can convert the data before sending it to the printer. These conversions will work, but unfortunately the data sender, such as a computer, or the data recipient, such as the printer, will have to be pre-programmed as described above or the data transfer will fail.
Further, some data types may be protected using security features that are unknown to a potential receiver. For example, video content may be encrypted using a variety of cryptographic techniques. To be able to display this video content, a receiver must have knowledge of both the cryptographic algorithm used to encrypt the content, as well as the key(s) used to encrypt the content. Without this knowledge, the receiver would be unable to display or otherwise use such encrypted video content from a sender. Beyond simple encryption, however, a sender of data may desire protecting this data using any number of content protection techniques. For instance, it may wish to allow the data to only be usable by certain potential receivers, or allow that only certain operations can be done to received data.